package com.flyqiu.flow.api;


import com.flyqiu.flow.api.context.FlyQiuFlowGlobalContext;
import com.flyqiu.flow.api.service.FlowHistoryService;
import com.flyqiu.flow.api.service.FlowModelService;
import com.flyqiu.flow.api.service.FlowRunningService;
import com.flyqiu.flow.api.service.FlowTaskService;

public interface FlyQiuFlowEngine {

    String versionCode();


    /**
     * 获取配置
     *
     * @return {@link FlyQiuFlowConfig}
     */
    FlyQiuFlowConfig getConfig();

    /**
     * 获取全局上下文
     *
     * @return {@link FlyQiuFlowGlobalContext}
     */
    FlyQiuFlowGlobalContext getGlobalContext();

    /**
     * 获取历史服务
     *
     * @return {@link FlowHistoryService}
     */
    FlowHistoryService getHistoryService();

    /**
     * 获取流程模型服务
     *
     * @return {@link FlowModelService}
     */
    FlowModelService getModelService();

    /**
     * 获取流程实例服务
     *
     * @return {@link FlowRunningService}
     */
    FlowRunningService getFlowRunningService();

    /**
     * 获取任务服务
     *
     * @return {@link FlowTaskService}
     */
    FlowTaskService getTaskService();


}
